/**
 * Creating a sidebar enables you to:
 - create an ordered group of docs
- render a sidebar for each doc of that group
- provide next/previous navigation

The sidebars can be generated from the filesystem, or explicitly defined here.

Create as many sidebars as you want.
*/

// @ts-check

/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
const sidebars = {
	// By default, Docusaurus generates a sidebar from the docs folder structure
	tutorialSidebar: [{type: 'autogenerated', dirName: 'tutorial'}],
	apiSidebar: [
		{
			type: 'doc',
			label: 'Dora SSR API Reference',
			id: 'api/intro',
		},
		{
			type: 'category',
			label: 'Basic Functionality',
			items: [
				{
					type: 'doc',
					label: 'App',
					id: 'api/Class/App',
				},
				{
					type: 'doc',
					label: 'View',
					id: 'api/Class/View',
				},
				{
					type: 'doc',
					label: 'Profiler',
					id: 'api/Class Object/Profiler',
				},
				{
					type: 'doc',
					label: 'Object',
					id: 'api/Class/Object',
				},
				{
					type: 'category',
					label: 'Audio Menagement',
					items: [
						{
							type: 'doc',
							label: 'Audio',
							id: 'api/Class/Audio',
						},
					]
				},
				{
					type: 'category',
					label: 'Assets Management',
					items: [
						{
							type: 'doc',
							label: 'Content',
							id: 'api/Class/Content',
						},
						{
							type: 'doc',
							label: 'Path',
							id: 'api/Class/Path',
						},
						{
							type: 'doc',
							label: 'Cache',
							id: 'api/Class/Cache',
						},
						{
							type: 'doc',
							label: 'DB',
							id: 'api/Class/DB',
						},
					]
				},
				{
					type: 'category',
					label: 'Input Management',
					items: [
						{
							type: 'doc',
							label: 'Keyboard',
							id: 'api/Class/Keyboard',
						},
						{
							type: 'doc',
							label: 'Controller',
							id: 'api/Class/Controller',
						},
					]
				},
				{
					type: 'category',
					label: 'Data Structure',
					items: [
						{
							type: 'doc',
							label: 'Array',
							id: 'api/Class/Array',
						},
						{
							type: 'doc',
							label: 'Dictionary',
							id: 'api/Class/Dictionary',
						},
						{
							type: 'doc',
							label: 'Vec2',
							id: 'api/Class/Vec2',
						},
						{
							type: 'doc',
							label: 'Size',
							id: 'api/Class/Size',
						},
						{
							type: 'doc',
							label: 'Rect',
							id: 'api/Class/Rect',
						},
						{
							type: 'doc',
							label: 'Color',
							id: 'api/Class/Color',
						},
						{
							type: 'doc',
							label: 'Color3',
							id: 'api/Class/Color3',
						},
					]
				},
			]
		},
		{
			type: 'category',
			label: 'Scene Management',
			items: [
				{
					type: 'category',
					label: 'Tree Management',
					items: [
						{
							type: 'doc',
							label: 'Director',
							id: 'api/Class/Director',
						},
						{
							type: 'doc',
							label: 'Scheduler',
							id: 'api/Class/Scheduler',
						},
						{
							type: 'doc',
							label: 'Camera',
							id: 'api/Class/Camera',
						},
						{
							type: 'doc',
							label: 'Camera2D',
							id: 'api/Class/Camera2D',
						},
						{
							type: 'doc',
							label: 'CameraOtho',
							id: 'api/Class/CameraOtho',
						},
					]
				},
				{
					type: 'category',
					label: 'Tree Nodes',
					items: [
						{
							type: 'doc',
							label: 'Node',
							id: 'api/Class/Node',
						},
						{
							type: 'doc',
							label: 'AlignNode',
							id: 'api/Class/AlignNode',
						},
						{
							type: 'doc',
							label: 'Menu',
							id: 'api/Class/Menu',
						},
						{
							type: 'doc',
							label: 'Touch',
							id: 'api/Class/Touch',
						},
						{
							type: 'doc',
							label: 'Slot',
							id: 'api/Class/Slot',
						},
						{
							type: 'doc',
							label: 'GSlot',
							id: 'api/Class/GSlot',
						},
						{
							type: 'doc',
							label: 'emit',
							id: 'api/Module/emit',
						},
					]
				},
			]
		},
		{
			type: 'category',
			label: 'Event Management',
			items: [
				{
					type: 'category',
					label: 'Global Events',
					items: [
						{
							type: 'doc',
							label: 'App Event',
							id: 'api/Global Event/App',
						},
					]
				},
				{
					type: 'category',
					label: 'Node Events',
					items: [
						{
							type: 'doc',
							label: 'Node Event',
							id: 'api/Node Event/Node',
						},
						{
							type: 'doc',
							label: 'Body Event',
							id: 'api/Node Event/Body',
						},
						{
							type: 'doc',
							label: 'Playable Event',
							id: 'api/Node Event/Playable',
						},
						{
							type: 'doc',
							label: 'Particle Event',
							id: 'api/Node Event/Particle',
						},
					]
				},
			]
		},
		{
			type: 'category',
			label: 'Graphics Rendering',
			items: [
				{
					type: 'category',
					label: 'Render Nodes',
					items: [
						{
							type: 'doc',
							label: 'Sprite',
							id: 'api/Class/Sprite',
						},
						{
							type: 'doc',
							label: 'Line',
							id: 'api/Class/Line',
						},
						{
							type: 'doc',
							label: 'DrawNode',
							id: 'api/Class/DrawNode',
						},
						{
							type: 'doc',
							label: 'ClipNode',
							id: 'api/Class/ClipNode',
						},
						{
							type: 'doc',
							label: 'Label',
							id: 'api/Class/Label',
						},
						{
							type: 'doc',
							label: 'EffekNode',
							id: 'api/Class/EffekNode',
						},
						{
							type: 'doc',
							label: 'TileNode',
							id: 'api/Class/TileNode',
						},
						{
							type: 'doc',
							label: 'SVG',
							id: 'api/Class/SVG',
						},
						{
							type: 'doc',
							label: 'Particle',
							id: 'api/Class/Particle',
						},
					]
				},
				{
					type: 'category',
					label: 'Render Objects',
					items: [
						{
							type: 'doc',
							label: 'Texture2D',
							id: 'api/Class/Texture2D',
						},
						{
							type: 'doc',
							label: 'BlendFunc',
							id: 'api/Class/BlendFunc',
						},
						{
							type: 'doc',
							label: 'Effect',
							id: 'api/Class/Effect',
						},
						{
							type: 'doc',
							label: 'SpriteEffect',
							id: 'api/Class/SpriteEffect',
						},
						{
							type: 'doc',
							label: 'Pass',
							id: 'api/Class/Pass',
						},
						{
							type: 'doc',
							label: 'RenderTarget',
							id: 'api/Class/RenderTarget',
						},
					]
				},
				{
					type: 'category',
					label: 'Animation Models',
					items: [
						{
							type: 'doc',
							label: 'Playable',
							id: 'api/Class/Playable',
						},
						{
							type: 'doc',
							label: 'Model',
							id: 'api/Class/Model',
						},
						{
							type: 'doc',
							label: 'DragonBone',
							id: 'api/Class/DragonBone',
						},
						{
							type: 'doc',
							label: 'Spine',
							id: 'api/Class/Spine',
						},
					]
				}
			]
		},
		{
			type: 'category',
			label: 'Node Actions',
			items: [
				{
					type: 'doc',
					label: 'Action',
					id: 'api/Class/Action',
				},
				{
					type: 'doc',
					label: 'Ease',
					id: 'api/Class/Ease',
				},
				{
					type: 'doc',
					label: 'Move',
					id: 'api/Module/Move',
				},
				{
					type: 'doc',
					label: 'X',
					id: 'api/Module/X',
				},
				{
					type: 'doc',
					label: 'Y',
					id: 'api/Module/Y',
				},
				{
					type: 'doc',
					label: 'Z',
					id: 'api/Module/Z',
				},
				{
					type: 'doc',
					label: 'Angle',
					id: 'api/Module/Angle',
				},
				{
					type: 'doc',
					label: 'AngleX',
					id: 'api/Module/AngleX',
				},
				{
					type: 'doc',
					label: 'AngleY',
					id: 'api/Module/AngleY',
				},
				{
					type: 'doc',
					label: 'Roll',
					id: 'api/Module/Roll',
				},
				{
					type: 'doc',
					label: 'Scale',
					id: 'api/Module/Scale',
				},
				{
					type: 'doc',
					label: 'ScaleX',
					id: 'api/Module/ScaleX',
				},
				{
					type: 'doc',
					label: 'ScaleY',
					id: 'api/Module/ScaleY',
				},
				{
					type: 'doc',
					label: 'SkewX',
					id: 'api/Module/SkewX',
				},
				{
					type: 'doc',
					label: 'SkewY',
					id: 'api/Module/SkewY',
				},
				{
					type: 'doc',
					label: 'Opacity',
					id: 'api/Module/Opacity',
				},
				{
					type: 'doc',
					label: 'Height',
					id: 'api/Module/Height',
				},
				{
					type: 'doc',
					label: 'Width',
					id: 'api/Module/Width',
				},
				{
					type: 'doc',
					label: 'Sequence',
					id: 'api/Module/Sequence',
				},
				{
					type: 'doc',
					label: 'Spawn',
					id: 'api/Module/Spawn',
				},
				{
					type: 'doc',
					label: 'Delay',
					id: 'api/Module/Delay',
				},
				{
					type: 'doc',
					label: 'Event',
					id: 'api/Module/Event',
				},
				{
					type: 'doc',
					label: 'Show',
					id: 'api/Module/Show',
				},
				{
					type: 'doc',
					label: 'Hide',
					id: 'api/Module/Hide',
				},
				{
					type: 'doc',
					label: 'AnchorX',
					id: 'api/Module/AnchorX',
				},
				{
					type: 'doc',
					label: 'AnchorY',
					id: 'api/Module/AnchorY',
				},
			]
		},
		{
			type: 'category',
			label: 'Physics Simulation',
			items: [
				{
					type: 'doc',
					label: 'PhysicsWorld',
					id: 'api/Class/PhysicsWorld',
				},
				{
					type: 'doc',
					label: 'BodyDef',
					id: 'api/Class/BodyDef',
				},
				{
					type: 'doc',
					label: 'Body',
					id: 'api/Class/Body',
				},
				{
					type: 'doc',
					label: 'Sensor',
					id: 'api/Class/Sensor',
				},
				{
					type: 'doc',
					label: 'FixtureDef',
					id: 'api/Class/FixtureDef',
				},
				{
					type: 'doc',
					label: 'JointDef',
					id: 'api/Class/JointDef',
				},
				{
					type: 'doc',
					label: 'Joint',
					id: 'api/Class/Joint',
				},
				{
					type: 'doc',
					label: 'MoveJoint',
					id: 'api/Class/MoveJoint',
				},
				{
					type: 'doc',
					label: 'MotorJoint',
					id: 'api/Class/MotorJoint',
				},
			]
		},
		{
			type: 'category',
			label: 'ECS Framework',
			items: [
				{
					type: 'doc',
					label: 'Entity',
					id: 'api/Class/Entity',
				},
				{
					type: 'doc',
					label: 'Group',
					id: 'api/Class/Group',
				},
				{
					type: 'doc',
					label: 'Observer',
					id: 'api/Class/Observer',
				},
			]
		},
		{
			type: 'category',
			label: 'Platformer Game Framework',
			items: [
				{
					type: 'doc',
					label: 'Behavior',
					id: 'api/Class/Platformer/Behavior',
				},
				{
					type: 'doc',
					label: 'Blackboard',
					id: 'api/Class/Platformer/Behavior/Blackboard',
				},
				{
					type: 'doc',
					label: 'Decision',
					id: 'api/Class/Platformer/Decision',
				},
				{
					type: 'doc',
					label: 'Data',
					id: 'api/Class/Platformer/Data',
				},
				{
					type: 'doc',
					label: 'PlatformCamera',
					id: 'api/Class/Platformer/PlatformCamera',
				},
				{
					type: 'doc',
					label: 'PlatformWorld',
					id: 'api/Class/Platformer/PlatformWorld',
				},
				{
					type: 'doc',
					label: 'TargetAllow',
					id: 'api/Class/Platformer/TargetAllow',
				},
				{
					type: 'doc',
					label: 'UnitAction',
					id: 'api/Class/Platformer/UnitAction',
				},
				{
					type: 'doc',
					label: 'Unit',
					id: 'api/Class/Platformer/Unit',
				},
				{
					type: 'doc',
					label: 'BulletDef',
					id: 'api/Class/Platformer/BulletDef',
				},
				{
					type: 'doc',
					label: 'Bullet',
					id: 'api/Class/Platformer/Bullet',
				},
				{
					type: 'doc',
					label: 'Face',
					id: 'api/Class/Platformer/Face',
				},
				{
					type: 'doc',
					label: 'Visual',
					id: 'api/Class/Platformer/Visual',
				},
			]
		},
		{
			type: 'category',
			label: 'Coroutine Management',
			items: [
				{
					type: 'doc',
					label: 'Behavior',
					id: 'api/Class/Routine',
				},
				{
					type: 'doc',
					label: 'thread',
					id: 'api/Module/thread',
				},
				{
					type: 'doc',
					label: 'threadLoop',
					id: 'api/Module/threadLoop',
				},
				{
					type: 'doc',
					label: 'once',
					id: 'api/Module/once',
				},
				{
					type: 'doc',
					label: 'loop',
					id: 'api/Module/loop',
				},
				{
					type: 'doc',
					label: 'cycle',
					id: 'api/Module/cycle',
				},
				{
					type: 'doc',
					label: 'sleep',
					id: 'api/Module/sleep',
				},
				{
					type: 'doc',
					label: 'wait',
					id: 'api/Module/wait',
				},
			]
		},
		{
			type: 'category',
			label: 'Machine Learning Algorithms',
			items: [
				{
					type: 'link',
					label: 'C4.5',
					href: '/docs/api/Class/ML#builddecisiontreeasync',
				},
				{
					type: 'doc',
					label: 'Q-learning',
					id: 'api/Class/QLearner',
				},
			]
		},
		{
			type: 'category',
			label: 'Dialogue System',
			items: [
				{
					type: 'doc',
					label: 'YarnRunner',
					id: 'api/Class/YarnRunner',
				},
				{
					type: 'doc',
					label: 'TextResult',
					id: 'api/Class/YarnRunner/TextResult',
				},
				{
					type: 'doc',
					label: 'OptionResult',
					id: 'api/Class/YarnRunner/OptionResult',
				},
				{
					type: 'doc',
					label: 'Markup',
					id: 'api/Class/YarnRunner/Markup',
				},
			]
		},
		{
			type: 'category',
			label: 'Networking Service',
			items: [
				{
					type: 'doc',
					label: 'HttpClient',
					id: 'api/Class/HttpClient',
				},
			]
		},
		{
			type: 'category',
			label: 'Uncategorized API',
			items: [
				{
					type: 'category',
					label: 'Class',
					items: [
						"api/Class/tolua",
						"api/Class/Platformer/UnitActionParam",
						"api/Class/Platformer/Decision/Leaf",
						"api/Class/Platformer/Behavior/Leaf",
						"api/Class/Platformer/AI",
						"api/Class/Node/Grabber",
						"api/Class/ML",
						"api/Class/Grid",
						"api/Class/Ease/EaseFunc",
						"api/Class/ContainerItem",
						"api/Class/Buffer",
					]
				},
				{
					type: 'category',
					label: 'Class Object',
					items: [
						"api/Class Object/Vec2",
						"api/Class Object/Touch",
						"api/Class Object/Texture2D",
						"api/Class Object/SVG",
						"api/Class Object/SpriteEffect",
						"api/Class Object/Sprite",
						"api/Class Object/Spine",
						"api/Class Object/Size",
						"api/Class Object/Sensor",
						"api/Class Object/Scheduler",
						"api/Class Object/RenderTarget",
						"api/Class Object/Rect",
						"api/Class Object/QLearner",
						"api/Class Object/Playable",
						"api/Class Object/Platformer/Visual",
						"api/Class Object/Platformer/UnitAction",
						"api/Class Object/Platformer/Unit",
						"api/Class Object/Platformer/TargetAllow",
						"api/Class Object/Platformer/PlatformWorld",
						"api/Class Object/Platformer/PlatformCamera",
						"api/Class Object/Platformer/Face",
						"api/Class Object/Platformer/BulletDef",
						"api/Class Object/Platformer/Bullet",
						"api/Class Object/PhysicsWorld",
						"api/Class Object/Pass",
						"api/Class Object/Particle",
						"api/Class Object/Observer",
						"api/Class Object/Object",
						"api/Class Object/Node",
						"api/Class Object/AlignNode",
						"api/Class Object/EffekNode",
						"api/Class Object/TileNode",
						"api/Class Object/Model",
						"api/Class Object/Menu",
						"api/Class Object/Line",
						"api/Class Object/Label",
						"api/Class Object/JointDef",
						"api/Class Object/Joint",
						"api/Class Object/Group",
						"api/Class Object/Grid",
						"api/Class Object/FixtureDef",
						"api/Class Object/Entity",
						"api/Class Object/Effect",
						"api/Class Object/DrawNode",
						"api/Class Object/DragonBone",
						"api/Class Object/Dictionary",
						"api/Class Object/Color3",
						"api/Class Object/Color",
						"api/Class Object/ClipNode",
						"api/Class Object/CameraOtho",
						"api/Class Object/Camera2D",
						"api/Class Object/Buffer",
						"api/Class Object/BodyDef",
						"api/Class Object/Body",
						"api/Class Object/BlendFunc",
						"api/Class Object/Array",
						"api/Class Object/Action",
					]
				},
				{
					type: 'category',
					label: 'Module',
					items: [
						"api/Module/Platformer",
						"api/Module/Log",
						"api/Module/Dora",
						"api/Module/Array",
					]
				},
			]
		},
	],
	// But you can create a sidebar manually
	/*
	tutorialSidebar: [
		'intro',
		'hello',
		{
			type: 'category',
			label: 'Tutorial',
			items: ['tutorial-basics/create-a-document'],
		},
	],
	*/
};

module.exports = sidebars;
